package map;

import java.util.Map;
import java.util.PriorityQueue;
import java.util.TreeMap;

public class MaximumNumberOfEatenApples1705 {
    public int eatenApples(int[] apples, int[] days) {
        int result = 0;
        TreeMap<Integer,Integer> map  = new TreeMap<>();
        for (int i = 0; i < apples.length; i++) {
            map.remove(i);
            int num = apples[i];
            int expire = i+days[i];
            if(expire!=i&&num!=0) {
                map.put(expire, map.getOrDefault(expire, 0) + num);
            }
            Map.Entry<Integer, Integer> v = map.firstEntry();
            if(v!=null) {
                if (v.getValue() > 0) {
                    result++;
                }
                if(v.getValue()==1){
                    map.remove(v.getKey());
                }else {
                    map.put(v.getKey(), v.getValue() - 1);
                }
            }
        }
        int day = apples.length;
        while (map.size()!=0){
            map.remove(day);
            Map.Entry<Integer, Integer> v = map.firstEntry();
            if(v!=null) {
                if (v.getValue() > 0) {
                    result++;
                }
                if(v.getValue()==1){
                    map.remove(v.getKey());
                }else {
                    map.put(v.getKey(), v.getValue() - 1);
                }

            }
            day++;
        }
        return result;
    }
}
